#include "cqueue.hpp"
// #include <unistd.h>
cqueue<int>cq;
const int times=4;
void* pFunc(void* argv){
    for(int i=0;i<times;i++){
        cq.put(i);
        sleep(1);
        printf("PUT: %d\n",i);
    }
    return nullptr;
}

void* cFunc(void* argv){
    for(int i=0;i<times;i++){
        int data=cq.get();
        sleep(1);
        printf("GET: %d\n",data);
    }
    return nullptr;
}

int main(){
    pthread_t p[2],c[2];
    pthread_create(&p[0],nullptr,pFunc,nullptr);
    pthread_create(&p[1],nullptr,pFunc,nullptr);
    pthread_create(&c[0],nullptr,cFunc,nullptr);
    pthread_create(&c[1],nullptr,cFunc,nullptr);
    // pthread_create(&c[2],nullptr,cFunc,nullptr);
    // pthread_create(&c[3],nullptr,cFunc,nullptr);
    pthread_join(p[0],nullptr);
    pthread_join(p[1],nullptr);
    pthread_join(c[0],nullptr);
    pthread_join(c[1],nullptr);
    // pthread_join(c[2],nullptr);
    // pthread_join(c[3],nullptr);
    printf("----END----\n");
    return 0;
}